package com.burgess.net.topic;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 * 持久型消息生产者
 * 创建人    BurgessLee
 * 创建时间   2020/5/20
 * 描述
 */
public class PersistantMessageProducer {

    public static void main(String[] args) throws JMSException, InterruptedException {
        //创建工厂
        //ActiveMQConnectionFactory 链接工厂，用来创建链接对象，以连接到JMSProvider
        ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
        //封装了一个具体的链接对象
        Connection connection = activeMQConnectionFactory.createConnection();


        // 生产和消费消息的一个上下文
        // 可以用来创建消费者、生产者和消息，这些都封装在一起组成一个原子操作
        // Boolean.TRUE表示使用事务，在执行commit的时候批量发送消息
        // AUTO_ACKNOWLEDGE:指定的是自动签收,在执行commit的时候，就会签收
        Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
        // 消息发送目的地
        Destination destination = session.createTopic("my-persistant-topic");
        MessageProducer producer = session.createProducer(destination);

        /**
         * 设置为持久型
         *  设定模式一定在链接开始之前
         */
        producer.setDeliveryMode(DeliveryMode.PERSISTENT);
        connection.start();

        for(int i = 0; i <= 3; i++){
            TextMessage textMessage = session.createTextMessage("message--" +i);
            //设置消息属性
            textMessage.setStringProperty("burgesslee", "burgesslee");

            Thread.sleep(1000);
            producer.send(textMessage);
        }
        session.commit();
        session.close();
        connection.close();
    }

}
